// 06-my-kill.js
// 引入child_process模块中的spawn方法
const { spawn } = require('child_process');

const args = process.argv.slice(2);

if (args.length !== 2) {
  console.error('Usage: node 06-my-kill.js <PID> <signal>');
  process.exit(1);
}

// 获取进程ID和信号量
const [pid, signal] = args;

// 校验进程ID是否为有效的数字
if (!Number.isInteger(parseInt(pid, 10))) {
  console.error('Error: PID');
  process.exit(1);
}

// 校验信号量是否合法
if (!Object.prototype.hasOwnProperty.call(process, `SIG${signal.toUpperCase()}`)) {
  console.error('Error: Invalid signal');
  process.exit(1);
}

// 构建 kill 命令
const kill = spawn('kill', [signal, pid]);

kill.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

kill.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

kill.on('close', (code) => {
  console.log(`kill process exited with code ${code}`);
});